编程求n个数的最小公倍数 您所在的位置:网站首页 壁纸4k超高清 二次元 编程求n个数的最小公倍数

编程求n个数的最小公倍数

2023-08-13 01:43| 来源: 网络整理| 查看: 265

文章目录 1 最大公约数、最小公倍数2 编程求两数的最大公约数、最小公倍数2.1 欧几里德算法(辗转相除法)2.2 代码实现 3 编程求n个连续数字的最小公倍数

1 最大公约数、最小公倍数 最小公倍数(Least Common Multiple) 两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数最大公约数(Greatest Common Divisor) 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个两个数的最小公倍数和最大公约数之间的关系 设两数乘积(product)为p,最大公约数为gcd,最小公倍数为lcm。则:p = gcd * lcm0 和一个数的最大公约数和最小公倍数 0除以任何一个数都得0,可以整除,所以0与一个数的最大公约数是这个数本身。一般不考虑 0 和一个数的最小公倍数,如果非要考虑,最小公倍数=0 2 编程求两数的最大公约数、最小公倍数 2.1 欧几里德算法(辗转相除法)

欧几里德算法求两数的最大公约数:gcd(a,b) = gcd(b,a mod b),其中a为较大的数。 示例:用欧几里德算法求 1997 和 615 的最大公约数:

1997 / 615 = 3 (余 152) 615 / 152 = 4(余7) 152 / 7 = 21(余5) 7 / 5 = 1 (余2) 5 / 2 = 2 (余1) 2 / 1 = 2 (余0)

至此,最大公约数为1。以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

2.2 代码实现 // 非递归求最大公约数。其中 x 为较大的数 function fun_gcd1(x, y) { let t = 0; while (y > 0) { t = x; x = y; y = t % y; } return x; } // 递归求最大公约数 function fun_gcd(x, y) { return y == 0 ? x : fun_gcd(y, x % y); } // 求两数的最小公倍数。其中 x 为较大的数 function fun_lcm(x, y) { return x * y / fun_gcd1(x, y); } console.log("10和20的最大公约数:" + fun_gcd(20, 10)); console.log("10和20的最小公倍数:" + fun_lcm(20, 10)); 10和20的最大公约数:10 10和20的最小公倍数:20 [Finished in 0.1s] 3 编程求n个连续数字的最小公倍数

写一个函数,它接收一个包含两个数字的数组参数arr,它的返回值为这两个数字范围内所有数字(包含这两个数字)的最小公倍数。

注意,较小数不一定总是出现在数组的第一个元素。

比如,传入[1, 3],那么函数的返回结果应为 1、2、3 的最小公倍数,即为 6。

smallestCommons([1, 5])应该返回 60。 smallestCommons([5, 1])应该返回 60。 smallestCommons([2, 10])应该返回 2520。. smallestCommons([1, 13])应该返回 360360。 smallestCommons([23, 18])应该返回 6056820。

function fun_gcd(x, y) { return y == 0 ? x : fun_gcd(y, x % y); } function smallestCommons(arr) { let min, max; let lcm; if (arr[0] > arr[1]) { max = arr[0]; min = arr[1]; } else { max = arr[1]; min = arr[0]; } lcm = min * (min + 1) / fun_gcd(min + 1, min); while (min++


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有